home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 52
/
Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso
/
Aminet
/
gfx
/
conv
/
wbmp.lha
/
WBMP2ILBM.rexx
< prev
Wrap
OS/2 REXX Batch file
|
2002-09-03
|
2KB
|
66 lines
/* Wireles Bitmap -> ILBM
$VER: Version 1.0 (03.09.02) */
IF ~SHOW('LIBRARIES','rexxsupport.library') THEN DO
IF ~ADDLIB('rexxsupport.library',10,-30,0) THEN DO
SAY 'Kann die <rexxsupport.library> nicht öffnen!'
EXIT(10)
END
END
Parse Arg OPTS
Parse Value OPTS with WBMP ' ' ILBM
IF Exists(WBMP)=0 Then Do
say "WBMP-file not found!"
Exit(0)
End
If ILBM="" | WBMP="" Then Do
Say '1b5b33326d'x||"wbmp2ilbm"||'1b5b33316d'x||" ilbm-file outfile"
Exit(0)
End
WBMPLaenge=SUBWORD(STATEF(WBMP),2,1)
Call Open(WBMP,WBMP,R)
Kennung=C2D(Readch(WBMP,2))
If Kennung~=0 Then Do
say "incorrect Headermarker $"||d2x(Kennung,4)
Exit(0)
End
Width=C2D(Readch(WBMP,1))
Height=C2D(Readch(WBMP,1))
WbmpRowlen=Width%8
If (Width//8)~=0 Then WbmpRowlen=WbmpRowlen+1
WbmpBodylen=WbmpRowlen*Height
If WbmpBodylen+4~=WbmpLaenge Then Do
say "incorrect Size"
Exit(0)
End
say "Input-file "|| WBMP ||" [WBMP] "||Width||"x"||Height||"x1"
say "create interleaved bitmap "||ILBM
IlbmRowlen=WbmpRowlen
If (IlbmRowlen*8)//16~=0 Then IlbmRowlen=IlbmRowlen+1
ILBMBodylen=IlbmRowlen*Height
Call Headbuilding()
CALL OPEN(ILBM,ILBM,WRITE)
WR=Writech(ILBM,HEAD)
C=CLOSE(ILBM)
CALL OPEN(ILBM,ILBM,A)
RowDummy=Insert(D2C(0),"",1,ILBMRowlen-1,D2C(0))
Do D=1 To Height
Row=Overlay(Readch(WBMP,WBMPRowlen),RowDummy,1,ILBMRowlen)
Wr=Writech(ILBM,Row)
End
C=Close(WBMP)
C=CLOSE(ILBM)
say "done"
Exit(0)
/* ILBM-Kopf basteln */
Headbuilding:
SCRMODE=135168
HEAD=FORM
HEAD=HEAD||X2C(D2X(ILBMBodylen+78,8))
HEAD=HEAD||ILBMBMHD||X2C(D2X(20,8))||X2C(D2X(Width,4))||X2C(D2X(Height,4))||X2C(D2X(0,8))
HEAD=HEAD||X2C(D2X(1,2))||X2C(D2X(0,6))||X2C(D2X(0,8))||X2C(D2X(Width,4))||X2C(D2X(Height,4))
HEAD=HEAD||CAMG||X2C(D2X(4,8))||X2C(D2X(SCRMODE,8))||CMAP||X2C(D2X(6,8))||X2C(D2X(0,6))||X2C(D2X(16777215,6))||GRAB||X2C(D2X(4,8))||X2C(D2X(3276850,8))
HEAD=HEAD||"BODY"||X2C(D2X(ILBMBodylen,8))
Return(0)
/* Ende Kopf-Bastelei */